<?php
require_once "Gi_Exception.php";
class Gi_Config {
  private $_config;
  
  public function __construct($file, $sector = null, $var = null) {
    $this->_config = self::get_from_ini($file, $sector, $var);
  }
  
  public static function get_from_ini ($file, $sector = null, $var = null) {
    $config=array();
    if (Gi_Loader::is_readable($file))
      $config= parse_ini_file($file, true);
    else
      throw new Gi_Exception("no se puede leer el archivo ini");
  
    if(is_array($config)) {
      if ($sector === null)
        return $config;
      elseif ($var === null)
        return $config[$sector];
      else
        return $config[$sector][$var];
    }
    else {
      throw new Gi_Exception("El archivo no contiene Configuraciones validas");
    }
  }
  
  public function get_config ($sector = null, $var = null) {
    if ($sector !== null) {
      if ($var !== null) {
        return $this->_config[$sector] [$var];
      }
      else {
        return $this->_config [$sector];
      }
    }
    else {
      return $this->_config;
    }
  }
  
  public function get_var ($key) {
    return $this->_config[$key];
  }
  
  public function __get ($key) {
    return $this->get_var($key);  
  }
  
  /**
  * @desc para poder chequear con la funcion isset()
  * @param string el nombre de la variable
  */
  public function __isset ($key) {
    return isset($this->_config[$key]);
  }
}
